Page({
  data:{
    // address:'',
    defaultAddress:'',
    hasAddr:'',
    cart:'',
    allChecked:false,
    totalPrice:0,
    totalNum:0
  },
  onShow(){
    let that = this;
    // 获取缓存中收货地址
    // wx.getStorage({
    //   key: "address",
    //   success: function(res){
    //     that.setData({
    //       address:res.data
    //     })
    //   }
    // });
    let userAddress = wx.getStorageSync("userAddress");
    // 查看缓存中是否有地址
    let hasAddr=userAddress.length;
    // 查找地址中是否有默认地址 无则长度0 有则长度不为0 wxml进行boolen判断
    that.setData({
      hasAddr
    })
    if(hasAddr){
      let defaultAddress = userAddress.find(v=>v.add_check=='true');
      if(defaultAddress){
        // 如果有默认地址
        that.setData({
          defaultAddress
        })
      }else{
        // 如果没设默认地址 以第一个地址为默认地址
        that.setData({
          defaultAddress:userAddress[0]
        })
      }
    }
    
    // 获取缓存中的购物车数据
    const cart = wx.getStorageSync("cart")||[];
    this.setCart(cart);
  },
  // 获取收货地址
  handleChooseAddress(){
    // 获取权限状态
    // wx.getSetting({
    //   success: (result) => {
    //     const scopeAddress = result.authSetting["scope.address"];
    //     if(scopeAddress===true||scopeAddress===undefined){
    //       wx.chooseAddress({
    //         success: (res)=>{
    //           wx.setStorage({
    //             key: 'address',
    //             data: res
    //           })
    //         }
    //       })
    //     }else{
    //       // 用户拒绝过授权 将不会再弹出授权页 需要用户自己打开
    //       wx.openSetting({
    //         success: (res) => {
    //           console.log(res);
    //           // 用户打开授权页 再次获取地址授权
    //           wx.chooseAddress({
    //             success: (res)=>{
    //               wx.setStorage({
    //                 key: 'address',
    //                 data: res
    //               })
    //             }
    //           })
    //         }
    //       });
            
    //     }
    //   },
    //   fail: () => {},
    //   complete: () => {}
    // });
    // 此时缓存中无地址信息 跳转到地址添加页 并告知从哪页跳转来的
    wx.navigateTo({
      url: '/pages/addAddress/addAddress?fromPage=cart'
    })
  },
  // 商品选中
  handleItemChange(e){
    // 获取修改商品的id
    const id = e.currentTarget.dataset.id;
    // 获取购物车数组
    let {cart}= this.data;
    // 找到被修改的商品对象
    let index = cart.findIndex(v=>v.id===id);
    // 选择状态取反
    cart[index].checked=!cart[index].checked;
    this.setCart(cart)
  },
  // 设置购物车状态 重新计算底部工具栏数据 全选、总价格、数量
  setCart(cart){
     // 计算全选 总价格总数量
     let allChecked =true;
     let totalPrice=0;
     let totalNum=0;
     cart.forEach(v=>{
       if(v.checked){
         totalPrice+=v.num*v.price;
         totalNum+=v.num;
       }else{
         allChecked=false;
       }
     })
     // 判断数组是否为空 为空不会执行cart.forEach 全选为勾选
     allChecked=cart.length!=0?allChecked:false;
     this.setData({
       cart,
       allChecked,
       totalPrice,
       totalNum
     })
     // 购物车重新设回data与缓存
     wx.setStorageSync("cart",cart);
  },
  // 商品全选 反选
  handleItemAllCheck(){
    // 获取data中数据
    let {cart,allChecked} = this.data;
    // 修改值
    allChecked=!allChecked;
    // 循环修改cart数组中的商品选中状态
    cart.forEach(v=>v.checked=allChecked);
    // 修改后的值填充会data与缓存中
    this.setCart(cart);
  },
  // 商品数量编辑
  handleItemNumEdit(e){
    // 获取传递的参数
    const {operation,id} = e.currentTarget.dataset;
    // 获取购物车数组
    let {cart} = this.data;
    // 找到需要修改商品的索引
    const index= cart.findIndex(v=>v.id===id);
    // 判断是否要删除
    if(cart[index].num===1&&operation===-1){
      // 弹窗提示
      wx.showModal({
        title:'提示',
        content:'您是否要删除？',
        success:(res)=>{
          if(res.confirm){
            cart.splice(index,1);
            this.setCart(cart);
          }else if(res.cancel){
            console.log('用户点击取消');
          }
        }
      })
    }else{
      // 进行数量修改
      cart[index].num+=operation;
      // 设置回缓存与data
      this.setCart(cart);
    }
  },
  // 支付
  handlePay(){
    // 判断是否有收货地址
    // const {address,totalNum} =this.data;
    const {defaultAddress,totalNum} =this.data;
    
    if(!defaultAddress.add_name){
      wx.showToast({
        title: '您还未选择收货地址',
        icon:'none'
      });
      return;
    }
    if(totalNum===0){
      wx.showToast({
        title: '您还未选购商品',
        icon:'none'
      });
      return;
    }
    // 跳转到支付页面
    wx.navigateTo({
      url: '/pages/pay/pay?'
    })
  }
})